#ifndef SCIENCEGL_GLApplication_H_
#define SCIENCEGL_GLApplication_H_

#include "OpenGLPrerequisites.h"

#ifdef SCIENCEGL_EXPORTS
#define SCIENCEGL_API __declspec(dllexport)
#else
#define SCIENCEGL_API __declspec(dllimport)
#endif

namespace ScienceGL
{
	//
	// Class that represent a Gl application
	//
	class SCIENCEGL_API GLApplication
	{
	public:

		//
		// Default constructor
		//
		GLApplication();

		//
		// Destructor
		//
		virtual ~GLApplication();

		//
		// Initialize the application
		//
		bool virtual Init();

		//
		// Prepare the application
		//
		void virtual Prepare(float dt);

		//
		// Render the application
		//
		void virtual Render();

		//
		// Shutdown the appplication
		//
		void virtual Shutdown();

		// 
		// Called when the application window is resized
		//
		void virtual OnResize(int width, int height);

	public:

		// static function to run a specified application
		static void runApplication(HINSTANCE hInstance, GLApplication* gameApplicaion);
	};
}

#endif

